home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 2: CDPD 1 / Almathera Ten on Ten - Disc 2: CDPD 1.iso / pd / 351-375 / 359 / dice / dice.lzh / lib / amiga / clwp.c < prev    next >
Text File  |  1990-04-19  |  986b  |  36 lines

  1.  
  2. /*
  3.  *
  4.  */
  5.  
  6. typedef struct LWP {
  7.     struct MinNode Node;
  8.     long    Bytes;        /*    total allocated bytes    */
  9.     long    Pc;         /*    program ctr    */
  10.     long    Sp;         /*    sp on entry    */
  11.     long    Regs[10];        /*    D234567 A2356    */
  12.     long    Aux[4];        /*    aux reg save    */
  13.     struct MinList List;    /*    event list    */
  14. } LWP;
  15.  
  16. #define RB_A5    8
  17.  
  18. static struct MinList LReadyList = { (struct MinNode *)&LReadyList.mlh_Tail, NULL, (struct MinNode *)&LReadyList.mlh_Head };
  19. static struct MinList LWaitList  = { (struct MinNode *)&LWaitList.mlh_Tail, NULL, (struct MinNode *)&LWaitList.mlh_Head };
  20.  
  21. _CLWPStart(pardesc, argSize, varSize, startPC)
  22. {
  23.     long bytes = argSize + varSize + 4 + sizeof(LWP);
  24.     LWP *lwp;
  25.  
  26.     if (lwp = AllocMem(bytes, MEMF_PUBLIC)) {
  27.     lwp->Bytes = bytes;
  28.     lwp->Pc = startPC;
  29.     lwp->Regs[RB_A5] = (long)lwp + sizeof(LWP) + varSize;
  30.     *(long *)((char *)lwp + sizeof(LWP) + varSize) = (long)lwp + 1;
  31.     NewList(&lwp->List);
  32.     AddTail(&LReadyList, &lwp->Node);
  33.     }
  34. }
  35.  
  36.